/*
实现成员函数的重载、覆盖与隐藏
Derived funC1...
Derived func2 int...
Derived funA...
Derived funB...

 *
 */
#include<iostream>
using namespace std;

class Base{
	public:
		virtual void funA(){
			cout << "Base funA..." << endl;
		}
		void funB(int i){
			cout << "Base funB int ..." << endl;
		}
};

class Derived: public Base{
	public:
		void funA() override{
			cout << "Derived funA..." << endl;
		}
		void funB(){
			cout << "Derived funB..." << endl;
		}
		void funC1(){
			cout << "Derived funC1..." << endl;
		}
		void funC2(int i){
			cout << "Derived func2 int..." << endl;
		}
};

int main(){
	//重载
	Derived* d = new Derived();
	d->funC1();
	d->funC2(2);

	//覆盖
	Base* b = d;
	b->funA();

	//隐藏
	d->funB();
}
